# 爬虫三
'''
题目：某学生会干部拟制作针对新生的校园宣传PPT,
已知种子url http://www.jsu.edu.cn/zjxy1/xyfg.htm有一批校园风光图片，
现需要从该网址及链接网址中下载校园风光及其它图片20张，
分别存盘为1.jpg—20.jpg。
'''
import requests
import re

# 1. 拿到网页数据 requests
url = 'https://www.jsu.edu.cn/zjxy1/xyfg.htm'
headers = {'User_Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'}
resp = requests.get(url, headers=headers)
# print(resp.content.decode("utf-8"))
page_content = resp.content.decode("utf-8")

# 2. 从网页中提取有用的信息 re
# 解析数据
pat_str = r'<p style=.*?><img.*?src="(?P<imgpath>.*?)".*?</p>'
pattern = re.compile(pat_str,re.S)

# 开始匹配
image_list = pattern.findall(page_content)
# ------------------------------------
# for li in image_list:
#     print(li)  # 测试正则表达式是否成功
# ------------------------------------

# 3. 数据保存
# 将图片按<序号.jpg>保存到image_out/文件夹下
jsu_url = 'https://www.jsu.edu.cn' # 爬取的图片文件路径不全，需补上这个“域名”

num = 1     # 计数器
for li in image_list:
    if num < 21:        # 只取前20张图片
        img_url = jsu_url + li
        print(img_url)
        # 重新发送请求，获取图片信息
        img_data = requests.get(url=img_url, headers=headers).content
        img_path = './image_out/' + str(num) + '.jpg'
        # 将图片写入指定位置
        with open(img_path, 'wb') as f:
            f.write(img_data)
        num += 1
    else:
        break
